From a1c48b91cd1cf1e9bf7077709b69f4bfd4c4abc7 Mon Sep 17 00:00:00 2001
From: Sandro Mani <manisandro@gmail.com>
Date: Tue, 5 Dec 2023 16:38:48 -0700
Subject: [PATCH] Fix several defects found by Coverity scan

From: giflib-5.2.1-17.fc39.src.rpm
Upstream: Not submitted

Signed-off-by: Sandro Mani <manisandro@gmail.com>
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
 gif2rgb.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/gif2rgb.c b/gif2rgb.c
index d9a469f..02cea41 100644
--- a/gif2rgb.c
+++ b/gif2rgb.c
@@ -170,6 +170,8 @@ static void SaveGif(GifByteType *OutputBuffer,
     /* Open stdout for the output file: */
     if ((GifFile = EGifOpenFileHandle(1, &Error)) == NULL) {
 	PrintGifError(Error);
+	free(OutputBuffer);
+	GifFreeMapObject(OutputColorMap);
 	exit(EXIT_FAILURE);
     }
 
@@ -179,6 +181,8 @@ static void SaveGif(GifByteType *OutputBuffer,
 	EGifPutImageDesc(GifFile,
 			 0, 0, Width, Height, false, NULL) == GIF_ERROR) {
 	PrintGifError(Error);
+	free(OutputBuffer);
+	GifFreeMapObject(OutputColorMap);
 	exit(EXIT_FAILURE);
     }
 
@@ -187,8 +191,11 @@ static void SaveGif(GifByteType *OutputBuffer,
 	       GifFile->Image.Width, GifFile->Image.Height);
 
     for (i = 0; i < Height; i++) {
-	if (EGifPutLine(GifFile, Ptr, Width) == GIF_ERROR)
+	if (EGifPutLine(GifFile, Ptr, Width) == GIF_ERROR) {
+	    free(OutputBuffer);
+	    GifFreeMapObject(OutputColorMap);
 	    exit(EXIT_FAILURE);
+        }
 	GifQprintf("\b\b\b\b%-4d", Height - i - 1);
 
 	Ptr += Width;
@@ -196,6 +203,8 @@ static void SaveGif(GifByteType *OutputBuffer,
 
     if (EGifCloseFile(GifFile, &Error) == GIF_ERROR) {
 	PrintGifError(Error);
+	free(OutputBuffer);
+	GifFreeMapObject(OutputColorMap);
 	exit(EXIT_FAILURE);
     }
 }
-- 
2.43.0

